package com.kh.pajx.sop.service;

import java.util.List;
import java.util.Map;

import com.kh.pajx.sop.base.IBaseService;
import com.kh.pajx.sop.domain.SysDictionary;
import com.kh.pajx.sop.domain.SysMenuAuth;

/**
 * 系统菜单业务逻辑接口
 * @author:	azzcsimp
 * @Createdate:	2014年7月20日 下午8:43:40
 */
public interface ISysMenuAuthService extends IBaseService<SysMenuAuth> {
	
	/**
	 * 获取用于树形展示菜单的Map对象
	 * @param systemDictList 系统字典列表
	 * @return   Map<String,String>
	 * @author:	azzcsimp
	 * @Createdate:	2014年8月5日 下午5:36:42
	 */
	Map<String,String> getMenuTreeMap(List<SysDictionary> systemDictList);
	
	/**
	 * 获取用于树形展示菜单的Map对象
	 * @param systemDictList 系统字典列表
	 * @param 菜单信息状态标识
	 * @return   Map<String,String>
	 * @author:	azzcsimp
	 * @Createdate:	2014年8月5日 下午5:36:42
	 */
	Map<String,String> getMenuTreeMap(List<SysDictionary> systemDictList, int flag);
	
	/**
	 * 查询顶级菜单
	 * @return   
	 * @author:	azzcsimp
	 * @Createdate:	2014年7月22日 下午5:27:27
	 */
	List<SysMenuAuth> findTopMenuAuthList();

	
	/**
	 * 根据系统字典编码获取该系统下所有菜单信息列表
	 * @param systemCode 系统字典编码
	 * @return   List<SysMenuAuth>
	 * @author:	azzcsimp
	 * @Createdate:	2014年8月5日 下午5:37:48
	 
	List<SysMenuAuth> findMenuAuthListBySystemCode(String systemCode);
	*/
	
	/**
	 * 根据系统字典编码获取该系统下所有菜单信息列表
	 * @param systemCode
	 * @return   
	 * @author:	azzcsimp
	 * @Createdate:	2014年8月6日 下午2:52:45
	 */
	public List<SysMenuAuth> findAllMenuListBySys(String systemCode);
	
	public List<SysMenuAuth> findAllMenuListBySys(String systemCode, int flag);

	/**
	 * 根据系统字典编码获取该系统下顶级菜单信息列表
	 * @param systemCode
	 * @return   
	 * @author:	azzcsimp
	 * @Createdate:	2014年8月6日 下午2:56:38
	 */
	public List<SysMenuAuth> findTopMenuListBySys(String systemCode);
	
	
	/**
	 * 根据系统字典编码获取该系统下所有菜单的树形结构信息列表
	 * @param systemCode
	 * @return   
	 * @author:	azzcsimp
	 * @Createdate:	2014年8月6日 下午3:17:38
	 */
	List<SysMenuAuth> getMenuTreeListBySys(String systemCode);
	
	
	/**
	 * 根据系统编码组织该系统下用于树形展示菜单的JSON字符串
	 * @param systemCode 系统字典编码
	 * @return   String
	 * @author:	azzcsimp
	 * @Createdate:	2014年8月5日 下午5:38:59
	 */
	public String getMenuTreeJson(String systemCode);
	
	public String getMenuTreeJson(String systemCode, int flag);
	
	// ========================================================
	
	
	/**
	 * 查找二级菜单
	 * @param parentId 父级菜单编号
	 * @return   
	 * @author:	azzcsimp
	 * @Createdate:	2014年7月22日 下午5:26:33
	 */
	List<SysMenuAuth> findChilerenMenuAuthList(String parentId);
	
	/**
	 * 统计菜单数量
	 * @param pId 父级菜单id
	 * @return   
	 * @author:	azzcsimp
	 * @Createdate:	2014年7月22日 下午6:31:30
	 */
	long counMenuAuthByPId(String pId);
	
	/**
	 * 获取系统下顶级菜单
	 * @param systemCode 系统字典编码
	 * @return   
	 * @author:	azzcsimp
	 * @Createdate:	2014年7月22日 下午7:00:49
	
	List<SysMenuAuth> findTopMenuAuthListBySystemCode(String systemCode);
	 */
	
	List<String> getAllMenuAuthUrls();

	List<String> getAllMenuAuthUrlsBySystemCode(String systemCode);

	List<SysMenuAuth> findSecondMenuAuthListBySystemCode(String systemCode);
}
